const Koa = require('koa');
const Router = require('koa-router');
const bodyparser = require('koa-bodyparser');
const app = new Koa()
const router = new Router()
// app.use(中间件)
// ctx === context 上下文  === request response 
// app.use(async ctx => {
//     ctx.body = { id: 1, name: "kkk" };//响应体
// });
// 登录 注册  获取列表（分页 查询） 添加 删除 编辑 等接口
// get获取 post新增 put编辑 delete删除
const user = [{ username: "kkk", password: 123 }, { username: "app", password: 123 }]
const list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
// 登录  post body传参 {username:"",password:""}
router.post('/login', async (ctx) => {
    const { username, password } = ctx.request.body
    const isLogin = user.some(item => item.username === username && item.password === password)
    ctx.body = isLogin ? '登陆成功' : "登录失败"
})
router.post('/register', async (ctx) => {
    ctx.body = '注册成功'
})
// 获取列表 query /list?pageIndex=1&pageSize=10
router.get('/list', async (ctx) => {
    // queryString
    const { pageIndex, pageSize } = ctx.query;
    ctx.body = list.slice((pageIndex - 1) * pageSize, pageIndex * pageSize)
})
// 删除根据下标列表 params  /list/4
// router.delete(地址, ...中间件(ctx,next), 控制器(ctx))
router.delete('/list/:ind', async (ctx, next) => {
    await next() // next是异步 必须用await
}, async (ctx, next) => {
    if (ctx.params.ind === '2') {
        await next() // next是异步 必须用await
    } else {
        ctx.body = '你传下标了吗二货2222'
    }
}, async (ctx) => {
    // params
    const { ind } = ctx.params;
    list.splice(ind, 1)
    ctx.body = list
})
app.use(bodyparser()) // 用来解析路由body参数
app.use(router.routes()) // 注册路由

app.listen(8888, () => {
    console.log('服务已经启动 localhost:8888')
})
// 第一周
// koa  koa-router  koa-bodyparser

// 四种请求
// get  query  params
// post body params
// put  body params
// delete  body params

// 三种传参方式
// query   /list?id=1&name=kkk  => ctx.query
// params  /list/1   /list/:id  => ctx.params
// body    {id:1,name:kkk}      => ctx.request.body


// 中间件
// router.get(地址,...中间件(ctx,next), 控制器(ctx))
// Koa目录化规范
// 跨域
// 前后端联调
// 洋葱圈模型

// 第二周
// mysql
// 博客系统
// 入门egg

// 第三周
// egg 
// Vue+React 原理层面
// 小程序
// React + TS